package pers.xiaojun.boot.file.core.client;

import pers.xiaojun.boot.file.core.pojo.dto.FilePresignedUrlRespDTO;

/**
 * 文件客户端
 *
 * @author xiaojun
 * @since 2025-11-13
 */
public interface FileClient {

    /**
     * 获取配置ID
     *
     * @return 配置ID
     */
    Long getId();

    /**
     * 上传文件
     *
     * @param content 文件数据（字节数组）
     * @param path    相对路径
     * @param type    文件类型
     * @return 文件完整路径
     */
    String upload(byte[] content, String path, String type);

    /**
     * 删除文件
     *
     * @param path 文件路径
     */
    void delete(String path);


    /**
     * 获得上传文件预签名地址
     *
     * @param path 相对路径
     * @return 文件预签名地址
     */
    default FilePresignedUrlRespDTO getPresignedPutObjectUrl(String path) {
        throw new UnsupportedOperationException("不支持的操作");
    }

}
